package br.com.clinica.supercao.home.controller;

import java.util.List;

import br.com.clinica.supercao.entity.Pessoa;
import br.com.clinica.supercao.entity.filter.PessoaSearchFilter;
import br.com.clinica.supercao.service.PessoaService;
import br.com.clinica.supercao.service.impl.PessoaServiceImpl;
import br.com.rpteixeira.controller.struts.view.AbstractEntityAction;
import br.com.rpteixeira.entity.Entity;
import br.com.rpteixeira.entity.filter.EntitySearchFilter;
import br.com.rpteixeira.exceptions.ServiceExcetion;
import br.com.rpteixeira.service.EntityService;
import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;
public abstract class AbstractSuperCaoAction<T extends Entity,S extends EntitySearchFilter,SERVICE extends EntityService<T, S>> extends
		AbstractEntityAction<T, S, SERVICE> {
	private static final long serialVersionUID = 1L;
	private static final String USER="user";
	private List<Pessoa> pessoas;
	private static Boolean logado;
	private PessoaService<Pessoa, PessoaSearchFilter> pessoaService;
	public Boolean getLogado() {
		logado=getSession().getAttribute(USER)!=null;
		return logado;
	}
@Override
protected HttpSession getSession() {
	return ServletActionContext.getRequest().getSession();
}
	public boolean isLogado(){
		return getLogado();
	}
	public  Pessoa getLogin() {
		return (Pessoa) getSession().getAttribute(USER);
	}
	public void setLogin(Pessoa login) {
		getSession().setAttribute(USER, login);
	}
	public List<Pessoa> getPessoas() throws ServiceExcetion {
		if(pessoas==null){
			pessoas=getPessoaService().findAll();
		}
		return pessoas;
	}

	public PessoaService<Pessoa,PessoaSearchFilter> getPessoaService() {
		if(pessoaService==null){
			pessoaService=new PessoaServiceImpl();
		}
		return pessoaService;
	}
}
